package controller.MenuActions;

import java.awt.event.ActionEvent;

import javax.swing.AbstractAction;
import javax.swing.JOptionPane;
import javax.swing.KeyStroke;

import view.HoofdScherm;
import model.Constants;
import controller.PresentatieController;

/**
 * 
 *  Deze klasse is verantwoordelijk voor de acties die geassocieerd zijn met het
 * beeldmenu: navigeren binnen de presentatie
 *
 */

public class NavigeerAction extends AbstractAction {

	private static final long serialVersionUID = 1L;
	private String bewerking = null;

	@Override
	public void actionPerformed(ActionEvent e) {

		switch (bewerking) {
		case (Constants.VORIGE):
			vorige();
			break;
		case (Constants.VOLGENDE):
			volgende();
			break;
		case (Constants.GANAAR):
			int slideNummer = vraagInvoer();
			gaNaar(slideNummer);
		}

	}

	public NavigeerAction(String name, String shortDescription,
			Integer mnemonic, KeyStroke key) {
		super(name, null);
		putValue(SHORT_DESCRIPTION, shortDescription);
		putValue(MNEMONIC_KEY, mnemonic);
		putValue(ACCELERATOR_KEY, key);
		this.bewerking = name;
	}

	private int vraagInvoer() {
		int slideNummer = 1;
		String s = null;
		while (s == null || s.equals("")) {
			s = (String) JOptionPane.showInputDialog(HoofdScherm.getInstance(),
					Constants.VOER_SLIDENUMMER_IN, Constants.INVOER_VEREIST,
					JOptionPane.PLAIN_MESSAGE, null, null, "1");

			if ((s != null) && (s.length() > 0)) {
				slideNummer = Integer.parseInt(s);
			}

		}
		return slideNummer;
	}

	public void volgende() {
		PresentatieController.presentatie.volgende();
	}

	public void vorige() {
		PresentatieController.presentatie.vorige();
	}

	public void gaNaar(int slideNummer) {
		PresentatieController.presentatie.gaNaar(slideNummer);
	}
}
